package com.xebest.web.form;

import com.xebest.web.form.base.BaseForm;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 采购form
 *
 * @author 李书峰
 */
public class XeVenPurchForm extends BaseForm {

    private static final long serialVersionUID = -1287322157824461821L;

    /**
     * 采购单号
     */
    private String purchOrder;

    /**
     * 商户code
     */
    private String userCode;

    /**
     * 订单号
     */
    private String orderId;

    /**
     * 供货商code
     */
    @NotNull(message = "供货商code不能为空")
    @NotEmpty(message = "供货商code不能为空")
    @Length(min = 1, max = 20, message = "供货商code长度不能大于20个字符")
    private String supplierCode;

    /**
     * 采购员
     */
    private String buyerCode;

    /**
     * 仓库编号
     */
    @NotNull(message = "仓库编号不能为空")
    @NotEmpty(message = "仓库编号不能为空")
    @Length(min = 1, max = 20, message = "仓库编号长度不能大于20个字符")
    private String storeId;

    /**
     * 采购类型（ 1：零采 2：集采）
     */
    @NotNull(message = "采购类型不能为空")
    private Integer purchType;

    /**
     * 预更新审核状态（1:待提交 2:待采购审核 3:待财务审核 4:采购驳回 5:财务驳回6:已审核 ）
     */
    private Integer checkStatus;

    /**
     * 预更新采购状态(1:待提交 2：审核中 3：采购中 4：正常完成 5：异常完成 6：已作废 7：已删除 )
     */
    private Integer purchStatus;


    /**
     * 当前审核状态（1:待提交 2:待采购审核 3:待财务审核 4:采购驳回 5:财务驳回6:已审核 ）
     */
    private Integer checkStatusPre;

    /**
     * 当前采购状态(1:待提交 2：审核中 3：采购中 4：正常完成 5：异常完成 6：已作废 7：已删除 )
     */
    private Integer purchStatusPre;

    /**
     * 采购费用
     */
    @NotNull(message = "采购费用不能为空")
    private BigDecimal purchAmount;

    /**
     * 结算方式（1：账期结算，2：预付款，3：现结）
     */
    @NotNull(message = "结算方式不能为空")
    private Integer settlementMethod;

    /**
     * 定金
     */
    @NotNull(message = "定金不能为空")
    private BigDecimal frontMoney;

    /**
     * 供货商名称
     */
    @NotNull(message = "供货商名称不能为空")
    @NotEmpty(message = "供货商名称不能为空")
    @Length(min = 1, max = 30, message = "供货商名称长度不能大于30个字符")
    private String supplierName;

    /**
     * 供应商手机
     */
    @NotNull(message = "供货商手机不能为空")
    @NotEmpty(message = "供货商手机不能为空")
    @Length(min = 1, max = 15, message = "供货商手机长度不能大于15个字符")
    private String supplierMobile;

    /**
     * 供应商 电话
     */
    private String supplierPhone;

    /**
     * 预计到货时间
     */
    @NotNull(message = "预计到货时间不能为空")
    @NotEmpty(message = "预计到货时间不能为空")
    private String expectedArrivalDate;

    /**
     * 下单日期
     */
    @NotNull(message = "下单日期不能为空")
    @NotEmpty(message = "下单日期不能为空")
    private String signDate;

    /**
     * 结算单号
     */
    private String settleOrder;

    /**
     * 结算日期
     */
    private Date settleDate;

    /**
     * 采购驳回备注
     */
    private String purchExamineRemark;

    /**
     * 财务驳回备注
     */
    private String financeExamineRemark;

    /**
     * 鲜咨达驳回备注
     */
    private String xianExamineRemark;

    /**
     * 是否删除 1:未删  2:删除
     */
    private Integer delFlag;

    /**
     * 打印状态：1未打印 2已打印
     */
    private Integer printStatus;

    /**
     * 备注
     */
    private String remark;

    /**
     * 修改人
     */
    private String modifyUser;

    /**
     * 版本号
     */
    private Integer version;

    /**
     * 采购单商品详情列表
     */
    @NotNull(message = "采购单商品不能为空")
    private List<XeVenPurchProductForm> purchProductList;

    /**
     * 预计到达开始时间
     */
    private String expectedArrivalDateStart;

    /**
     * 预计到达结束时间
     */
    private String expectedArrivalDateEnd;

    /**
     * 签订开始时间
     */
    private String signDateStart;

    /**
     * 签订结束时间
     */
    private String signDateEnd;

    /**
     * 完成开始时间
     */
    private String completeDateStart;

    /**
     * 完成结束时间
     */
    private String completeDateEnd;

    /**
     * 查询文本框里输入的内容
     */
    private String searchText;

    /**
     * 查询起始时间
     */
    private String searchTimeStart;
    /**
     * 查询结束时间
     */
    private String searchTimeEnd;

    /**
     * 导出所传字段名
     */
    private String[] fieldArr;

    /**
     * 订单号list
     */
    private List<String> orderList;

    /**
     * 文本搜索类型（1,采购单编码;2,供货商名称;3,备注;4,仓库名;5,订单号）
     */
    private Integer searchType;

    /**
     * 文本搜索类型（1,商户名称;2,店铺名称;3,商户账号;4,供货商名称）
     */
    private Integer searchParamType;

    /**
     * 查询文本框里输入的内容
     */
    private String searchParamText;

    /**
     * 时间搜索类型(1,下单时间 2,预计到货时间 3,完成时间 )
     */
    private Integer searchTimeType;

    /**
     * 采购单列表
     */
    private List<XeVenPurchForm> formList;

    /**
     * 是否是审核列表（1，财务审核；2，鲜咨达审核）
     */
    private Integer isCheckList;

    /**
     * 单据列表
     */
    private List<XeVenPurchOrderBillForm> billList;

    /**
     * 添加方式(1 自动 ，2 手动)
     */
    private Integer AddType;
    /**
     * 汇总采购查询条件  1采购单号 2 商品名称 3 商品货号 4 供货商名称
     */
    private Integer searchTypeQuery;
    //商品名称
    private String proName;
    //商品货号
    private String proNum;

    /**
     * 商户名称
     */
    private String userName;

    /**
     * 店铺名称
     */
    private String shopName;


    private List<String> skuList;

    private Integer finCheckListFlag;

    public Integer getFinCheckListFlag() {
        return finCheckListFlag;
    }

    public void setFinCheckListFlag(Integer finCheckListFlag) {
        this.finCheckListFlag = finCheckListFlag;
    }

    public List<String> getSkuList() {
        return skuList;
    }

    public void setSkuList(List<String> skuList) {
        this.skuList = skuList;
    }

    public String getProName() {
        return proName;
    }

    public void setProName(String proName) {
        this.proName = proName;
    }

    public String getProNum() {
        return proNum;
    }

    public void setProNum(String proNum) {
        this.proNum = proNum;
    }

    public Integer getSearchTypeQuery() {
        return searchTypeQuery;
    }

    public void setSearchTypeQuery(Integer searchTypeQuery) {
        this.searchTypeQuery = searchTypeQuery;
    }

    public String getPurchOrder() {
        return purchOrder;
    }

    public void setPurchOrder(String purchOrder) {
        this.purchOrder = purchOrder;
    }

    public String getUserCode() {
        return userCode;
    }

    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }

    public String getOrderId() {
        return orderId;
    }

    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }

    public String getSupplierCode() {
        return supplierCode;
    }

    public void setSupplierCode(String supplierCode) {
        this.supplierCode = supplierCode;
    }

    public String getBuyerCode() {
        return buyerCode;
    }

    public void setBuyerCode(String buyerCode) {
        this.buyerCode = buyerCode;
    }

    public String getStoreId() {
        return storeId;
    }

    public void setStoreId(String storeId) {
        this.storeId = storeId;
    }

    public Integer getPurchType() {
        return purchType;
    }

    public void setPurchType(Integer purchType) {
        this.purchType = purchType;
    }

    public Integer getCheckStatus() {
        return checkStatus;
    }

    public void setCheckStatus(Integer checkStatus) {
        this.checkStatus = checkStatus;
    }

    public Integer getPurchStatus() {
        return purchStatus;
    }

    public void setPurchStatus(Integer purchStatus) {
        this.purchStatus = purchStatus;
    }

    public BigDecimal getPurchAmount() {
        return purchAmount;
    }

    public void setPurchAmount(BigDecimal purchAmount) {
        this.purchAmount = purchAmount;
    }

    public Integer getSettlementMethod() {
        return settlementMethod;
    }

    public void setSettlementMethod(Integer settlementMethod) {
        this.settlementMethod = settlementMethod;
    }

    public BigDecimal getFrontMoney() {
        return frontMoney;
    }

    public void setFrontMoney(BigDecimal frontMoney) {
        this.frontMoney = frontMoney;
    }

    public String getSupplierName() {
        return supplierName;
    }

    public void setSupplierName(String supplierName) {
        this.supplierName = supplierName;
    }

    public String getSupplierMobile() {
        return supplierMobile;
    }

    public void setSupplierMobile(String supplierMobile) {
        this.supplierMobile = supplierMobile;
    }

    public String getSupplierPhone() {
        return supplierPhone;
    }

    public void setSupplierPhone(String supplierPhone) {
        this.supplierPhone = supplierPhone;
    }

    public String getExpectedArrivalDate() {
        return expectedArrivalDate;
    }

    public void setExpectedArrivalDate(String expectedArrivalDate) {
        this.expectedArrivalDate = expectedArrivalDate;
    }

    public String getSignDate() {
        return signDate;
    }

    public void setSignDate(String signDate) {
        this.signDate = signDate;
    }

    public String getSettleOrder() {
        return settleOrder;
    }

    public void setSettleOrder(String settleOrder) {
        this.settleOrder = settleOrder;
    }

    public Date getSettleDate() {
        return settleDate;
    }

    public void setSettleDate(Date settleDate) {
        this.settleDate = settleDate;
    }

    public String getPurchExamineRemark() {
        return purchExamineRemark;
    }

    public void setPurchExamineRemark(String purchExamineRemark) {
        this.purchExamineRemark = purchExamineRemark;
    }

    public String getFinanceExamineRemark() {
        return financeExamineRemark;
    }

    public void setFinanceExamineRemark(String financeExamineRemark) {
        this.financeExamineRemark = financeExamineRemark;
    }

    public Integer getDelFlag() {
        return delFlag;
    }

    public void setDelFlag(Integer delFlag) {
        this.delFlag = delFlag;
    }

    public Integer getPrintStatus() {
        return printStatus;
    }

    public void setPrintStatus(Integer printStatus) {
        this.printStatus = printStatus;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getModifyUser() {
        return modifyUser;
    }

    public void setModifyUser(String modifyUser) {
        this.modifyUser = modifyUser;
    }

    public Integer getVersion() {
        return version;
    }

    public void setVersion(Integer version) {
        this.version = version;
    }

    public List<XeVenPurchProductForm> getPurchProductList() {

        return purchProductList;
    }

    public void setPurchProductList(List<XeVenPurchProductForm> purchProductList) {

        this.purchProductList = purchProductList;
    }

    public String getExpectedArrivalDateStart() {

        return expectedArrivalDateStart;
    }

    public void setExpectedArrivalDateStart(String expectedArrivalDateStart) {

        this.expectedArrivalDateStart = expectedArrivalDateStart;
    }

    public String getExpectedArrivalDateEnd() {

        return expectedArrivalDateEnd;
    }

    public void setExpectedArrivalDateEnd(String expectedArrivalDateEnd) {

        this.expectedArrivalDateEnd = expectedArrivalDateEnd;
    }

    public String getSignDateStart() {

        return signDateStart;
    }

    public void setSignDateStart(String signDateStart) {

        this.signDateStart = signDateStart;
    }

    public String getSignDateEnd() {

        return signDateEnd;
    }

    public void setSignDateEnd(String signDateEnd) {

        this.signDateEnd = signDateEnd;
    }

    public String getCompleteDateStart() {

        return completeDateStart;
    }

    public void setCompleteDateStart(String completeDateStart) {

        this.completeDateStart = completeDateStart;
    }

    public String getCompleteDateEnd() {

        return completeDateEnd;
    }

    public void setCompleteDateEnd(String completeDateEnd) {

        this.completeDateEnd = completeDateEnd;
    }

    public String getSearchText() {

        return searchText;
    }

    public void setSearchText(String searchText) {

        this.searchText = searchText;
    }

    public String[] getFieldArr() {

        return fieldArr;
    }

    public void setFieldArr(String[] fieldArr) {

        this.fieldArr = fieldArr;
    }

    public List<String> getOrderList() {

        return orderList;
    }

    public void setOrderList(List<String> orderList) {

        this.orderList = orderList;
    }

    public Integer getSearchType() {

        return searchType;
    }

    public void setSearchType(Integer searchType) {

        this.searchType = searchType;
    }

    public Integer getSearchTimeType() {

        return searchTimeType;
    }

    public void setSearchTimeType(Integer searchTimeType) {

        this.searchTimeType = searchTimeType;
    }

    public Integer getCheckStatusPre() {

        return checkStatusPre;
    }

    public void setCheckStatusPre(Integer checkStatusPre) {

        this.checkStatusPre = checkStatusPre;
    }

    public Integer getPurchStatusPre() {

        return purchStatusPre;
    }

    public void setPurchStatusPre(Integer purchStatusPre) {

        this.purchStatusPre = purchStatusPre;
    }

    public List<XeVenPurchForm> getFormList() {

        return formList;
    }

    public void setFormList(List<XeVenPurchForm> formList) {

        this.formList = formList;
    }

    public String getSearchTimeStart() {

        return searchTimeStart;
    }

    public void setSearchTimeStart(String searchTimeStart) {

        this.searchTimeStart = searchTimeStart;
    }

    public String getSearchTimeEnd() {

        return searchTimeEnd;
    }

    public void setSearchTimeEnd(String searchTimeEnd) {

        this.searchTimeEnd = searchTimeEnd;
    }

    public Integer getIsCheckList() {

        return isCheckList;
    }

    public void setIsCheckList(Integer isCheckList) {

        this.isCheckList = isCheckList;
    }

    public List<XeVenPurchOrderBillForm> getBillList() {

        return billList;
    }

    public void setBillList(List<XeVenPurchOrderBillForm> billList) {

        this.billList = billList;
    }

    public String getXianExamineRemark() {

        return xianExamineRemark;
    }

    public void setXianExamineRemark(String xianExamineRemark) {

        this.xianExamineRemark = xianExamineRemark;
    }

    public Integer getAddType() {

        return AddType;
    }

    public void setAddType(Integer addType) {

        AddType = addType;
    }

    public Integer getSearchParamType() {
        return searchParamType;
    }

    public void setSearchParamType(Integer searchParamType) {
        this.searchParamType = searchParamType;
    }

    public String getSearchParamText() {
        return searchParamText;
    }

    public void setSearchParamText(String searchParamText) {
        this.searchParamText = searchParamText;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

}
  
